/**
 * 66. 加一
 *
 * 给定一个由 整数 组成的 非空 数组所表示的非负整数，在该数的基础上加一。
 * 最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
 * 你可以假设除了整数 0 之外，这个整数不会以零开头。
 */
public class LC0066 {
    public static int[] plusOne(int[] digits) {
        int length = digits.length;
        boolean needPlus = false;
        if (digits[length - 1] == 9) {
            for (int i = length - 1; i >= 0; i--) {
                if (digits[i] == 9) {
                    digits[i] = 0;
                    if (i == 0) {
                        needPlus = true;
                    }
                } else {
                    digits[i] = digits[i] + 1;
                    break;
                }
            }
            if (needPlus) {
                int[] newIntArr = new int[length + 1];
                newIntArr[0] = 1;
                for (int i = 1; i < newIntArr.length; i++) {
                    newIntArr[i] = 0;
                }
                digits = newIntArr;
            }
        } else {
            digits[length - 1] = digits[length - 1] + 1;
        }
        return digits;
    }

    public static void main(String[] args) {
        System.out.println(plusOne(new int[]{8,9,9,9}));
    }
}
